package satk.beans.institucion;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import satk.objetos.Institucion;

/**
 * <h3>AddInstitucionBeans.java</h3>
 * <div><em>Fecha de creación: 25/05/2011, 11:26:24 PM.</em></div>
 * <p></p>
 * @author Sergio Flores Genis <sf.cancun@gmail.com>
 */
@ManagedBean
@RequestScoped
public class AddInstitucionBeans
        implements satk.beans.interfaces.IntControlBeansAdd, java.io.Serializable {

    private Institucion institucion = null;

    public AddInstitucionBeans() {
        this.institucion = new Institucion(-1, "", "");
    }

    @Override
    public Institucion getNews() {
        return institucion;
    }

    @Override
    public String add() {
        java.util.List<java.lang.Throwable> lista = institucion.valida();
        if (!lista.isEmpty()) {
            String summary = satk.tools.GeneralEx.excepcionListThrowable(lista);
            throw new javax.faces.validator.ValidatorException(new FacesMessage(summary));
        }
        try {
            new satk.database.ManagerInstitucion().add(institucion);
            this.institucion = new Institucion(-1, "", "");
        } catch (java.sql.SQLIntegrityConstraintViolationException ex) {
            Logger.getLogger(AddInstitucionBeans.class.getName()).log(Level.SEVERE,
                    "Nombre o siglas de institución duplicadas", ex);
            if (ex.getErrorCode() == 1062){
                throw new javax.faces.event.AbortProcessingException(
                        "Ya existe una institución con el mismo nombre o/y siglas.");
            } else {
                throw new javax.faces.event.AbortProcessingException(ex.getErrorCode()
                        + " - Se violo la integridad de detos <br/>."+ ex.getMessage());
            }
        } catch (java.sql.SQLException ex) {
            Logger.getLogger(AddInstitucionBeans.class.getName()).log(Level.SEVERE,
                    "Error al registrar la institución", ex);
            throw new javax.faces.event.AbortProcessingException(ex.getErrorCode() + ex.getMessage());
        }
        return null;
    }
}
